package cn.hinglo.gameclaw.im.action;

import cn.hinglo.gameclaw.data.controller.BaseController;
import cn.hinglo.gameclaw.data.entity.Result;
import cn.hinglo.gameclaw.im.service.LiveRoomService;
import cn.hutool.core.util.StrUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @createTime: 2018/5/3
 * @author: HingLo
 * @description: 直播地址房间管理
 */
@RestController
@RequestMapping("/im/live/")
public class LiveRoomAction extends BaseController {
    private final LiveRoomService liveRoomService;

    @Autowired
    public LiveRoomAction(LiveRoomService liveRoomService) {
        this.liveRoomService = liveRoomService;
    }

    /**
     * 直播地址列表<br>
     * <p>
     * 从本地数据库查询，在创建的时候将成功的房间信息放入到本地数据库中
     * <p>暂时未使用</p>
     *
     * @return 直播房间的的列表
     */
    @GetMapping("query/list")
    public Result list() {
        return success(liveRoomService.listService());
    }

    /**
     * 通过直播地址的Id来查看直播间信息
     *
     * @param id 直播间编号
     * @return 直播频道信息
     */
    @GetMapping("query/id")
    public Result queryByIdLiveRoom(String id) {
        return success(liveRoomService.queryByIdLiveRoomService(id));
    }


    /**
     * 创建直播地址,
     * <p>暂时未使用</p>
     *
     * @param type 频道类型 ( 0 : rtmp, 1 : hls, 2 : http)
     * @param name 频道名称
     * @return 是否创建成功
     */
    @PostMapping("create/room")
    public Result create(String name, Integer type) {
        if (StrUtil.isBlank(name) || type == null) {
            return error("创建参数传递不正确");
            //频道类型只有0,1,2 三种
        } else if (type > 2 || type < 0) {
            return error("频道类型不正确");
        } else {
            return result(liveRoomService.createService(name, type), "直播频道创建失败");
        }

    }

    /**
     * 删除直播间
     * <p>暂时未使用</p>
     *
     * @param cid 直播间的唯一Id
     * @return 返回是否删除成功
     */
    @DeleteMapping("delete")
    public Result delete(String cid) {
        if (StrUtil.isBlank(cid)) {
            return error("参数传递不正确");
        }
        return result(liveRoomService.deleteService(cid), "删除失败");

    }
}
